Azure Purviewのマルチクラウドスキャンコネクタを使ってAmazon S3バケットのデータカタログを管理する
いわさです。
Microsoft Ignite 2021にあわせて大量のAzureアップデートが紹介されていましたが、Azure Purviewのアップデートがいくつか登場していました。
そもそも私がPurviewを知らず、良い機会なのでPurviewを触ってみることにしたのですが、Amazon S3をデータソースに指定することが出来ることを知ったので試してみました。
Azure Purview
そもそも、Azure Purviewとは何でしょうか。
Purviewは様々なデータソースのデータカタログを一元管理するためのサービスです。
その様々なデータソースについてはAzureのサービスは当然ながら、マルチクラウドスキャンコネクタや統合ランタイムを利用することで、オンプレミスからAWS/Google Cloudまで様々な製品のデータソースと接続することが出来ます。
現在進行形でどんどん追加されているのですが以下が現時点で利用可能なコネクタです。
Purview Connector Overview - Azure Purview | Microsoft Docs
本日は、この中でもAmazon S3コネクタを利用して、Purviewがどのようなサービスなのか少し理解をするために使ってみます。
Purviewアカウントを作成
Purviewを利用するにあたり、AzureポータルでPurviewアカウントを作成します。
そして作成したアカウントを通し、Purview Studioを通して操作を行う形になります。
本日時点で、日本リージョンは利用出来ませんので、今回は米国西部2リージョンを選択しました。
Purviewアカウント作成にはEvent HubsとPurviewのリソースプロバイダー有効化が必要なのですが、検証フェーズで自動で有効化してくれます。
ただし、タイムラグのせいか私は失敗したので、失敗したあとは少し時間置いてから試してみると良いです。
Amazon S3へ接続
では、Amazon S3へ接続を行いたいと思います。
ざっくりいうと、AWS上でMicrosoftが所有するAWSアカウントを信頼したIAMロールを作成します。
そしてそのIAMロールにS3へのアクセスを許可して、AzureサービスからAssumeしてもらってS3へアクセスしてもらう流れです。
前述のとおりAzure Purviewでは、AzureポータルではなくPurview Studioから操作を行います。
Purview StudioのManagement
->Credentials
でクレデンシャルの新規作成を行います。
Authentication method
でRole ARN
を選択するとAWSアカウント用の設定内容となり、MicrosoftのAWSアカウントIDとExternal IDが表示されます。
この情報を使用してサードパーティーAWSアカウント向けのIAMロールを作成します。
また、今回はS3バケットをスキャンするのでAmazonS3ReadOnlyAccess
マネージドポリシーをアタッチしました。
便宜上このポリシーを付与しましたが、最小権限に則ってアクションやリソースを絞ったほうが良いかと思います。
また、該当S3バケットにSSE-KMS暗号化を指定している場合は、KMSへのアクセス許可も必要となります。
今回はSSE指定なしで検証しています。
ロールを作成し、Role ARN
をPurview側で保持するクレデンシャル情報に登録出来たのでS3への接続設定を行います。
事前にS3バケットを作成し、バケット名を入手しておく必要があります。
データマップメニューから登録ソースにAmazon S3を選択しバケット名を指定します。(s3://<バケット名>)
接続設定の際には、バケット内のディレクトリを指定することは出来ません。
ただし、次のステップのスキャン操作時には、どのディレクトリをスキャン対象とするか指定することが出来ます。
接続出来ると、データマップ上にAmazon S3アイコンが表示されます。
ちなみに、Amazon S3ではなくAWSアカウントを接続先として登録することも出来ます。
この場合はスキャンを行う際に、どのリソースかどのバケットかなどを指定する形になります。
登録リソースが多い場合はこちらを使ったほうが便利かもしれないです。
ただ、その場合はIAMロール側で広めにアクセス許可が必要となります。
S3バケットをスキャンさせてみる
S3バケットには2つCSVデータをアップロードしておきます。
ひとつは日本語形式のマルチバイトなCSVデータです。
連番,氏名(漢字),氏名(カタカナ),性別,電話番号,携帯電話,メールアドレス,郵便番号,住所,生年月日,パスワード
もうひとつは先日Amplify Admin UIで作成したダミーデータです。
サイドメニューあるいはマップからスキャン操作を開始することが可能です。
スキャンにあたって、まずはスキャンルールを選択します。
どういったファイルを対象とするか、分類ルールは何を使うかなどを設定します。
分類ルールを使って、データカタログをPurviewへ取り込んだ際に、列を分類させることが出来ます。
別のタイミングでPurviewの分類と秘密度についてもう少し掘り下げてみたいと思いますので本日は列に何かしらマークやラベリング出来る機能だとお考えいただければと思います。
本日はPersonalとSecurityを選択してみました。
画面を見ていただくとお気づきになるかと思いますが、PersonalにJapanese My Number
が存在していますね。
日本のデータも考慮されていそうです。
これもまた別のタイミングで試してみたいですが、カスタム分類を作成し正規表現を使ったカスタムルールを設定することも出来ます。
なお、デフォルトでAmazon S3用スキャンルールがあり、そちらを利用することも可能です。
デフォルトでサポートされているファイル形式や分類が設定されているのでカスタム分類を利用しない場合はデフォルトのスキャンルールで良いと思います。
スキャンルールを設定した後は、スキャントリガーを指定します。
繰り返しか単発スキャンか選択でき、繰り返しの場合は週次か月次で細かいスケジューリングを行っていきます。
週次の場合は曜日を指定します。
月次の場合は毎月何日かあるいは第x曜日かを指定出来ます。
今回は単発で即スキャンしました。
最大24時間かかるとドキュメントには記述がありましたが2~3分で終わりました。
データカタログの確認
スキャンが完了したので、データカタログメニューからスキーマを確認してみましょう。
Amplify Admin UIで作成したダミーデータですがカラム名が表示され、分類が設定されていますね。
CSVだからか、データタイプは全てstring
になっています。
次に、日本語を想定したCSVデータです。
こちらはカラム名が正しく取り込まれていません。また分類もされていません。
カラム数は正しい状態です。
デフォルトの分類ルールの中身がわからないですが、マルチバイト文字列や正規表現の関係でしょうか。
期待どおり自動スキャンされなかったデータが出てくるかもしれませんが、そこで利用を見送る必要はありません。
自動スキャン後にデータカタログにどういった付加情報をつけて管理するかがPurviewの機能の大事な部分です。
ここでは列名や分類を手動で設定しました。
また、列の説明情報を追加で設定しています。
データカタログ管理機能から検索を行うことでどのデータをどのデータカタログで管理しているのかをすぐに発見することが可能です。
更に、データカタログには追加で用語や担当者など様々な情報を付加することが出来ます。
付加情報を用いることで、データを検索した先に誰が管理しているのか、どういう用途のデータなのか、ビジネスユーザー向けでどう呼ばれる名称なのかなど付加属性を使ったマークや検索が出来るようになります。
さいごに
Purviewの1割くらいしかまだ触ってない感覚ですが、このサービスとてもおもしろいですね。
様々なネットワーク環境、サーバーにデータストアが分散し、連携するケース、大規模なシステムでは多いんじゃないかと思います。
そういった時、どこからどのデータを取得すれば良いかなどMarkdownやExcelで作成されたデータ定義書みたいなもので確認することが私の場合は多かったです。
ただ、そのドキュメントもシステム毎に管理されていたり、おまけに一部ドキュメントが最新化されていなかったりとかもありました。
そういった形で統合的なデータ管理がしっかりされず、結果として連携しているはずの複数システムでデータが二重管理になってしまっていたりなど、実際のデータベースに対して確認を行うなど、どこのシステムのデータベースで何を利用しているのか把握するのは中々大変でした。
定期スキャンでデータカタログの最新状態を統合管理し、情報を付加し、検索出来る。
システム設計においてとても良いサービスなんじゃないかと思います。
また、システム設計以外の観点からでも、どのデータストアでどれだけ機密性の高いデータを保有しているのか、最新状況を管理することが出来るので機密データ管理の側面からもとても有効なソリューションだと思います。
現在プレビューの分析機能がPurviewには用意されており、それらも使ってみたいと思いますのでまた紹介出来ればと思います。